# 基础镜像：CUDA 12.8.1 + Ubuntu 22.04（运行时版本）
FROM nvidia/cuda:12.8.1-runtime-ubuntu22.04

# 避免交互式提示
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8

# 1. 先设置工作目录（后续复制文件会默认到这个目录，避免路径混乱）
WORKDIR /app

# 2. 配置 Ubuntu 清华源（加速系统依赖安装）
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \
    sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 3. 安装系统依赖：Python3、SSH服务、编译工具等
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 \
    python3-pip \
    python3-dev \
    build-essential \
    libgl1-mesa-glx \
    git \
    wget \
    curl \
    sudo \
    openssh-server \
    && rm -rf /var/lib/apt/lists/*  # 清理缓存，减小镜像体积

# 4. 配置SSH服务（允许root登录，设置初始密码）
RUN mkdir /var/run/sshd  # 创建SSH运行目录
RUN echo 'root:onpharos' | chpasswd  # 设置root密码为onpharos（建议启动后修改）
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config  # 允许root登录
RUN sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config  # 关闭PAM认证（简化SSH连接）

# 5. 【关键修正】先复制 requirements.txt 到容器（此时已在 /app 目录）
COPY requirements.txt .

# 6. 再配置 pip 清华源 + 安装 Python 依赖（此时 requirements.txt 已存在）
RUN pip3 install --upgrade pip && \
    pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
    pip3 install --no-cache-dir -r requirements.txt  # --no-cache-dir 减小镜像体积

# 7. 最后复制应用代码和启动脚本（避免依赖文件变动导致重新安装依赖，利用Docker缓存）
COPY . .
COPY start_trainer.sh /app/start_trainer.sh
RUN chmod +x /app/start_trainer.sh  # 给启动脚本加执行权限

# 暴露端口
EXPOSE 8000 22

# 启动脚本：同时启动SSH服务和训练API
CMD ["/app/start_trainer.sh"]